package liming.tool.json;

import org.json.JSONObject;


/**
 * 序列化接口，调用serialize即可实现本类的序列化，参与访问的注解有@JsonMark，@JsonTime，@JsonType，@JsonMarkCollection，@JsonMarkMap
 */
public interface JsonSerializer extends JsonGetName{
    /**
     * 序列化对象，将JsonMark中设置的名称与本类中的成员变量映射，并返回JSONObject
     */
    default JSONObject serialize() {
        return new JSONObject().put(getJsonRootName(), serializeBody(getDefaultClass()));
    }
    default JSONObject serializeBody(Class<?> type) {
        return JsonConstructor.serialize(this,type);
    }
}